guestfs-java(3) | Virtualization Support | guestfs-java(3) |
НАЗВА¶
guestfs-java — як користуватися libguestfs з коду на Java
КОРОТКИЙ ОПИС¶
import com.redhat.et.libguestfs.*; GuestFS g = new GuestFS (); g.add_drive ("disk.img", new HashMap<String,Object>() { { put ("readonly", Boolean.TRUE); put ("format", "raw"); } }); g.launch ();
ОПИС¶
На цій сторінці підручника наведено документацію щодо викликів libguestfs з коду мовою програмування Java. На сторінці задокументовано відмінності від програмного інтерфейсу C та подано декілька прикладів. Якщо ви не дуже знайомі із користуванням libguestfs, вам також слід прочитати підручник з guestfs(3).
ЗАКРИТТЯ ДЕСКРИПТОРА¶
Дескриптор закривається, коли його вилучає засіб збирання сміття у системі. Оскільки дескриптори libguestfs у значній мірі керуються станами, можна закрити (і отже, звільнити) дескриптор явним чином, викликавши метод "close".
ВИНЯТКИ¶
Помилки функцій libguestfs пов'язуються із виключенням "LibGuestFSException". Виключення містить єдиний параметр, яким є повідомлення про помилку (параметр "String").
Спроба викликати будь-який метод для закритого дескриптора призведе до надсилання однакового виключення.
Якщо у прив'язках станеться помилка malloc(3) або якоїсь іншої функції отримання пам'яті, буде надіслано виключення "LibGuestFSOutOfMemory".
ПОДІЇ¶
З боку Java реалізовано повну підтримку програмного інтерфейсу подій libguestfs. Створіть клас, який реалізує інтерфейс "EventCallback", створіть екземпляр цього класу, а потім викличте метод "GuestFS#set_event_callback" для реєстрації цього екземпляра. Метод "event" класу викликається, коли libguestfs створює повідомлення про подію.
Наприклад, такий код виводить усі події трасування:
GuestFS g = new GuestFS (); g.set_trace (true); g.set_event_callback ( new EventCallback () { public void event (long event, int eh, String buffer, long[] array) { System.out.println (GuestFS.eventToString (event) + ": " + buffer); } }, GuestFS.EVENT_TRACE); g.add_drive_ro ("disk.img"); // тощо
Виведені дані будуть подібними до таких:
EVENT_TRACE: add_drive_ro "disk.img" EVENT_TRACE: add_drive_ro = 0 // тощо
НЕОБОВ'ЯЗКОВІ АРГУМЕНТИ¶
Деяким методам передається необов'язкова карта додаткових параметрів. Прикладом таких методів є метод "g.add_drive", який можна викликати в один з двох способів:
g.add_drive ("disk.img");
або за допомогою додаткових аргументів:
Map<String, Object> optargs = new HashMap<String, Object>() { { put ("readonly", Boolean.TRUE); put ("format", "raw"); } }; g.add_drive ("disk.img", optargs);
Щоб дізнатися більше про цю тему, див. "ВИКЛИКИ ІЗ НЕОБОВ'ЯЗКОВИМИ АРГУМЕНТАМИ".
Необов'язкові параметри дескриптора
При створенні дескриптора ви також можете передати карту необов'язкових параметрів:
Map<String, Object> optargs = new HashMap<String, Object>() { { put ("close_on_exit", Boolean.FALSE); put ("environment", Boolean.TRUE); } }; GuestFS g = new GuestFS (optargs);
Докладніший опис можна знайти тут: "guestfs_create_flags" in guestfs(3).
ЗБИРАННЯ І ЗАПУСК¶
Libguestfs для Java є розширенням Java Native Interface (JNI), яке поділено на три частини:
- libguestfs.jar
- libguestfs-ВЕРСІЯ.jar
- Файл JAR з кодом суто Java, який містить декілька класів, основним з яких є "com.redhat.et.libguestfs.GuestFS". У основній гілці розробки назва файла JAR містить номер версії, але у деяких дистрибутивах Linux файл перейменовують так, щоб у назві не було номера версії.
- libguestfs_jni.so
- Код JNI (написаний на C). Ця частина містить приватні функції інтерфейсу між кодом Java і звичайною бібліотекою libguestfs, яку написано на C. Вам не слід викликати ці функції безпосередньо.
- libguestfs.so
- Типова бібліотека C libguestfs.
Для збирання вашої програми мовою Java вам слід встановити розташування файла JAR і додати його до шляху до класів. Приклад:
export CLASSPATH=/usr/share/java/libguestfs.jar javac MyProgram.java
Для запуску вашої програми Java вам також потрібно впевнитися, що файл JAR перебуває у каталозі зі шляху до класів, а також є частиною вашої програми. Приклад:
export CLASSPATH=.:/usr/share/java/libguestfs.jar java MyProgram
ПРИКЛАД 1. СТВОРЕННЯ ОБРАЗУ ДИСКА¶
@EXAMPLE1@
ПРИКЛАД 2. ПЕРЕВІРКА ОБРАЗУ ДИСКА ВІРТУАЛЬНОЇ МАШИНИ¶
@EXAMPLE2@
ТАКОЖ ПЕРЕГЛЯНЬТЕ¶
guestfs(3), guestfs-examples(3), guestfs-erlang(3), guestfs-gobject(3), guestfs-golang(3), guestfs-lua(3), guestfs-ocaml(3), guestfs-perl(3), guestfs-python(3), guestfs-recipes(1), guestfs-ruby(3), http://libguestfs.org/, http://caml.inria.fr/.
АВТОРИ¶
Richard W.M. Jones ("rjones at redhat dot com")
АВТОРСЬКІ ПРАВА¶
Copyright (C) 2011-2023 Red Hat Inc.
LICENSE¶
BUGS¶
To get a list of bugs against libguestfs, use this link: https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
To report a new bug against libguestfs, use this link: https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
When reporting a bug, please supply:
- The version of libguestfs.
- Where you got libguestfs (eg. which Linux distro, compiled from source, etc)
- Describe the bug accurately and give a way to reproduce it.
- Run libguestfs-test-tool(1) and paste the complete, unedited output into the bug report.
2023-02-21 | libguestfs-1.50.1 |